package br.com.universidade.castelo.branco.controller;

import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.universidade.castelo.branco.delagate.PesquisaDeSatisfacaoDelegate;
import br.com.universidade.castelo.branco.form.ValidacoesForm;
import br.com.universidade.castelo.branco.util.Constantes;
import br.com.universidade.castelo.branco.vo.Colaborador;

@Controller
public class LoginController extends Constantes {
	
	@RequestMapping("/")
	public String chamaTelaInicial(){
		
		return "pesquisadesatisfacao/login/login";
	}
	
	@RequestMapping("/index")
	public String chamaTelaIndex(){
		
		return "pesquisadesatisfacao/login/login";
	}
	
	@RequestMapping("/login")
	public String chamaTelaLogin(){
		
		return "pesquisadesatisfacao/login/login";
	}
	
	@RequestMapping("/validaLogin")
	public String validaLogin(@Valid Colaborador dadosLogin, BindingResult result, HttpSession session){
		
		if(result.hasFieldErrors("login") || result.hasFieldErrors("senha")) {
			return "pesquisadesatisfacao/login/login";
		}
		
		boolean colaboradorValido = false;
		
		ValidacoesForm form = new ValidacoesForm();
		PesquisaDeSatisfacaoDelegate pdsDelegate = new PesquisaDeSatisfacaoDelegate();
		
		try {
			
			colaboradorValido = form.validaLogin(dadosLogin);
			
			dadosLogin = pdsDelegate.buscaColaboradorLogin(dadosLogin.getLogin());
			
		} catch (Exception e) {
			
			session.setAttribute(COLABORADOR_VALIDO_SESSION_ATRIBUTE, colaboradorValido);
			return "redirect:/login";
			
		}
		
		if(colaboradorValido){
			session.setAttribute(COLABORADOR_LOGADO_SESSION_ATRIBUTE, dadosLogin);
			return "redirect:/menu";
			
		} else {
			
			session.setAttribute(COLABORADOR_VALIDO_SESSION_ATRIBUTE, colaboradorValido);
			
			return "redirect:/login";
			
			
		}
	}
	
	@RequestMapping("/funcionalidade")
	public String chamaTelafuncionalidade(){
		
		return "pesquisadesatisfacao/login/funcionalidade";
	}

}
